package hcn.protocol.ods.paymentXML;/**
 * @Auther: Administrator
 * @Date: 2019/4/20 12:57
 * @Description:
 */

import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author:FangZhiyi
 * @Description
 * @Data Created in 2020/11/5 10:53
 * @Moddified By:
 */
@XmlRootElement(name = "MsgBody")
public class GetPayedListXMLReq implements Serializable  {
    private static final long serialVersionUID = -2410933192880770180L;


    /**
     * hospitalCode : 医院代码
     * beginDate : 起始日期
     * endDate : 结束日期
     * outpatientType : 门诊类型(1-普通2-云门诊普通)
     * patientIdentityCardlist : 证件集合
     * patientMedicalCardList : 诊疗卡集合
     * patientCodelist : 患者在 his 中的唯一标识集合
     */

    private String VisitOrganization;
    private String SettleBeginDateTime;
    private String SettleEndDateTime;
    private int OutpatientType;
    //查询类型，参数设置，1表示按患者患者标识集合查询；2表示按证件集合查询；3表示按诊疗卡集合查询；默认是1
    private int QueryType;
    private List<CertificatesBean> IdCardLists;
    private List<CardsBean> MedicalCardIdLists;
    private List<PatientCode> SourcePatientIdLists;
    /**
     * executeFlag : 执行标志 ：0本参数无效 1已执行 2未执行 3 已退费 4 已作废
     */
    private Integer ExecuteStatus;

    @XmlElement(name = "VisitOrganization")
    public String getVisitOrganization() {
        return VisitOrganization;
    }

    public void setVisitOrganization(String visitOrganization) {
        VisitOrganization = visitOrganization;
    }

    @XmlElement(name = "SettleBeginDateTime")
    public String getSettleBeginDateTime() {
        return SettleBeginDateTime;
    }

    public void setSettleBeginDateTime(String settleBeginDateTime) {
        SettleBeginDateTime = settleBeginDateTime;
    }

    @XmlElement(name = "SettleEndDateTime")
    public String getSettleEndDateTime() {
        return SettleEndDateTime;
    }

    public void setSettleEndDateTime(String settleEndDateTime) {
        SettleEndDateTime = settleEndDateTime;
    }

    @XmlElement(name = "OutpatientType")
    public int getOutpatientType() {
        return OutpatientType;
    }

    public void setOutpatientType(int outpatientType) {
        OutpatientType = outpatientType;
    }

    @XmlElement(name = "QueryType")
    public int getQueryType() {
        return QueryType;
    }

    public void setQueryType(int queryType) {
        QueryType = queryType;
    }

    @XmlElementWrapper(name = "IdCardLists")
    @XmlElement(name = "IdCardList")
    public List<CertificatesBean> getIdCardLists() {
        return IdCardLists;
    }

    public void setIdCardLists(List<CertificatesBean> idCardLists) {
        IdCardLists = idCardLists;
    }

    @XmlElementWrapper(name = "MedicalCardIdLists")
    @XmlElement(name = "MedicalCardIdList")
    public List<CardsBean> getMedicalCardIdLists() {
        return MedicalCardIdLists;
    }

    public void setMedicalCardIdLists(List<CardsBean> medicalCardIdLists) {
        MedicalCardIdLists = medicalCardIdLists;
    }

    @XmlElementWrapper(name = "SourcePatientIdLists")
    @XmlElement(name = "SourcePatientIdList")
    public List<PatientCode> getSourcePatientIdLists() {
        return SourcePatientIdLists;
    }

    public void setSourcePatientIdLists(List<PatientCode> sourcePatientIdLists) {
        SourcePatientIdLists = sourcePatientIdLists;
    }

    public void addCertificate(CertificatesBean certificateBean) {
        if (IdCardLists == null) {
            IdCardLists = new ArrayList<CertificatesBean>();
        }
        this.IdCardLists.add(certificateBean);
    }
    public void addCard(CardsBean card) {
        if (MedicalCardIdLists == null) {
            MedicalCardIdLists = new ArrayList<>();
        }
        this.MedicalCardIdLists.add(card);
    }

    public void addPatientCode(PatientCode patientCode) {
        if (SourcePatientIdLists == null) {
            SourcePatientIdLists = new ArrayList<>();
        }
        this.SourcePatientIdLists.add(patientCode);
    }

    @XmlElement(name = "ExecuteStatus")
    public Integer getExecuteStatus() {
        return ExecuteStatus;
    }

    public void setExecuteStatus(Integer executeStatus) {
        ExecuteStatus = executeStatus;
    }

    @XmlRootElement(name = "IdCardList")
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class CertificatesBean {
        /**
         * cardType : 1、二代身份证2、港澳居民身份证3、台湾居民身份证4、护照
         * cardNumber : 证件号
         */

        private String IdCardCode;
        private String IdCard;

        public String getIdCardCode() {
            return IdCardCode;
        }

        public void setIdCardCode(String idCardCode) {
            IdCardCode = idCardCode;
        }

        public String getIdCard() {
            return IdCard;
        }

        public void setIdCard(String idCard) {
            IdCard = idCard;
        }
    }

    @XmlRootElement(name = "MedicalCardIdList")
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class CardsBean {
        /**
         * cardType : 患者诊疗卡类型:1.居民健康卡 2.医院就诊卡 3.医保(社保)卡 9.其他
         * cardNo : 患者诊疗卡号码
         */

        private String MedicalCardType;
        private String MedicalCardId;

        public String getMedicalCardType() {
            return MedicalCardType;
        }

        public void setMedicalCardType(String medicalCardType) {
            MedicalCardType = medicalCardType;
        }

        public String getMedicalCardId() {
            return MedicalCardId;
        }

        public void setMedicalCardId(String medicalCardId) {
            MedicalCardId = medicalCardId;
        }
    }

    @XmlRootElement(name = "SourcePatientIdList")
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class PatientCode{
        private String SourcePatientId; //patientId : 患者在 his 中的唯一标识

        public String getSourcePatientId() {
            return SourcePatientId;
        }

        public void setSourcePatientId(String sourcePatientId) {
            SourcePatientId = sourcePatientId;
        }
    }
}
